package com.cloudkinto.dto.order.amazonV2Shipping;

import lombok.Data;

import java.util.List;

/**
 * @author long
 * @Description /getRates请求
 * @Date 2025/2/12 10:05
 */
@Data
public class GetRatesRequest {

    /**
     * 收货地址
     * 当 channelType 为 Amazon 时，shipTo 地址不是必需的，将被忽略
     */
    private Address shipTo;

    /**
     * 必填
     * 发货地址
     */
    private Address shipFrom;

    /**
     * 返回地址
     * 为空时，shipFrom 值将考虑用于 returnTo
     */
    private Address returnTo;

    /**
     * 发货日期和时间（请求的取件）。默认为当前日期和时间
     */
    private String shipDate;

    /**
     * 发件人指令
     */
    private ShipperInstruction shipperInstruction;

    /**
     * 必填
     * 包裹列表
     * Amazon Shipping 目前支持每个包裹一个 getRates 请求。如果有多个包裹被运送到同一地址，请为每个包裹发出 getRates 请求，然后进行后续的 purchaseShipment 调用以生成标签
     * 将来，我们计划扩展 getRates 功能以处理多个软件包
     */
    private List<Package> packages;

    /**
     * 增值服务
     */
    private ValueAddedServiceDetails valueAddedServices;

    /**
     * 税详情
     */
    private List<TaxDetail> taxDetails;

    /**
     * 必填
     * 货件来源渠道
     */
    private ChannelDetails channelDetails;

    /**
     * 用于传递有关 MCI 集成商 shipperType 的其他信息的对象：ClientReferenceDetail 的列表
     */
    private List<ClientReferenceDetail> clientReferenceDetails;

    /**
     * 货件类型
     */
    private ShipmentType shipmentType;

    /**
     * 接入点详细信息
     */
    private AccessPointDetails destinationAccessPointDetails;
}
